package ee.ttu.rakarh.model.data.dao;


import java.util.ArrayList;

import org.apache.log4j.Logger;
import org.hibernate.Criteria;
import org.hibernate.classic.Session;
import org.hibernate.criterion.Restrictions;

import ee.ttu.rakarh.model.data.entities.Item;
import ee.ttu.rakarh.model.data.entities.ItemStore;
import ee.ttu.rakarh.util.HibernateUtil;

public class ItemStoreDaoImpl implements ItemStoreDAO {
	public static final Logger LOG = Logger.getLogger(ItemStoreDaoImpl.class);

	@Override
	public void updateItemStore(ItemStore itemStore) {
		Session session = null;
		try {
			session = HibernateUtil.getSessionFactory().getCurrentSession();
			session.beginTransaction();
			ItemStore itemStoreToUpdate = (ItemStore) session.load(ItemStore.class, itemStore.getId());
			itemStoreToUpdate.setItem(itemStore.getItem());
			itemStoreToUpdate.setItemCount(itemStore.getItemCount());
			itemStoreToUpdate.setStore(itemStore.getStore());
					
			session.getTransaction().commit();

		} catch (Exception e) {
			LOG.error(e);
		} finally {
			//session.close();
		}
	}

	@SuppressWarnings({ "unchecked" })
	@Override
	public ItemStore getItemStore(Item item) {
		Session session = null;
		ItemStore itemStore = null;
		try {
			session = HibernateUtil.getSessionFactory().getCurrentSession();
			session.beginTransaction();
			
			Criteria crit = session.createCriteria(ItemStore.class);
			
			ArrayList<ItemStore> itemStores = (ArrayList<ItemStore>) crit.add(Restrictions.eq("item", item)).list();
			
			if(itemStores.size() > 0){
				LOG.info("volodja");
				itemStore = itemStores.get(0);
				LOG.info("==== "+itemStore.getId());
			}else{
				return null;
			}

		} catch (Exception e) {
			LOG.error(e);
		} finally {
			//session.close();
		}
		
		
		return itemStore;
	}

}
